package com.opensky.module.sys.infrastructure.exception;

import com.opensky.common.infrastructure.exception.StatusCode;
import lombok.Getter;

/**
 * description 自定义错误码
 *
 * @author 🇨🇳中国印🇨🇳
 * @date 2021年11月23日15时05分58秒
 */
@Getter
public enum MessageCode implements StatusCode {

    /**
     * 请求成功
     */
    OK(200, "请求成功"),

    /**
     * 请求参数出错
     */
    BAD_REQUEST(400, "请求参数出错"),

    /**
     * 请求未授权
     */
    UN_AUTHORIZATION(401, "请求未授权"),

    /**
     * 没有权限
     */
    FORBIDDEN(403, "没有权限"),

    /**
     * 找不到页面或接口
     */
    NOT_FOUND(404, "找不到页面或接口"),

    /**
     * 服务器出错
     */
    INTERNAL_SERVER_ERROR(500, "服务器出错"),

    SYSTEM_BUSY(505, "服务器忙"),

    /**
     * 自定义错误码和提示信息
     */
    DICT_NAME_REPEAT_ERROR(1000001, "字典名称重复"),
    DICT_CODE_REPEAT_ERROR(1000002, "字典码值重复"),
    DICT_SORT_REPEAT_ERROR(1000003, "字典排序值重复"),

    USER_NAME_REPEAT_ERROR(1000004, "用户名重复"),
    USER_PHONE_REPEAT_ERROR(1000005, "用户手机号重复"),
    USER_EMAIL_REPEAT_ERROR(1000006, "用户邮箱重复"),

    DEPT_NAME_REPEAT_ERROR(1000007, "部门名称重复"),
    DEPT_CODE_REPEAT_ERROR(1000008, "部门编码重复"),
    DEPT_SORT_REPEAT_ERROR(1000009, "部门排序值重复"),

    ROLE_NAME_REPEAT_ERROR(1000010, "角色名称重复"),

    MENU_NAME_REPEAT_ERROR(1000011, "菜单名称重复"),
    MENU_URL_REPEAT_ERROR(1000012, "菜单URL重复"),
    MENU_SORT_REPEAT_ERROR(1000013, "菜单排序值重复"),


    ;


    /**
     * 当前代码
     */
    private final int code;

    /**
     * 消息
     */
    private final String message;

    MessageCode(int code, String message) {
        this.code = code;
        this.message = message;
    }
}
